const { parentPort, threadId } = require('worker_threads');
const Network = require('../lib/core/v2/network');
let n = null;
parentPort.on('message', (msg) => {
  if (msg.type === 'BM') {
    n = new Network(msg.config.network);
    msg.config.layers.forEach(conf => n.addLayer(...conf));
    parentPort.postMessage({ type: 'BM', status: 1 });
  } else if (msg.type === 'FF') {
    let res = n.feedforward(msg.data);
    parentPort.postMessage({ type: 'FF', status: 1, res, id: msg.id });
  } else if (msg.type === 'T') {
    n.train(msg.data, msg.lr, msg.trainingTime);
    parentPort.postMessage({type:'T',status:1,id:msg.id});
  }else if(msg.type === 'RBM'){
    n = new Network(msg.config.network);
    msg.config.layers.forEach(conf => n.addLayer(...conf));
    parentPort.postMessage({ type: 'RBM', status: 1 });
  }
})
parentPort.postMessage({type:'online',threadId:threadId});